package com.sean.gulimall.product.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.sean.common.utils.PageUtils;
import com.sean.common.utils.R;
import com.sean.gulimall.product.entity.AttrGroupEntity;
import com.sean.gulimall.product.vo.AttrRelationVo;

import java.util.Map;

/**
 * 属性分组
 *
 * @author sean
 * @email sean_xin@126.com
 * @date 2022-05-22 21:41:06
 */
public interface AttrGroupService extends IService<AttrGroupEntity> {

    PageUtils queryPage(Map<String, Object> params);

    /**
     * 根据三级产品分类id查询所有的属性分组
     * @param params
     * @param categoryId
     * @return
     */
    PageUtils queryPageByCategoryId(Map<String, Object> params, Long categoryId);

    /**
     * 根据属性分组id查询关联的所有属性
     * @param attrGroupId 属性分组id
     * @return
     */
    R queryAllAttrByAttrGroupId(Long attrGroupId);

    /**
     * 删除属性分组关联关系
     * @param attrRelationArray 要删除的属性关联数组
     * @return
     */
    R removeRelation(AttrRelationVo[] attrRelationArray);

    /**
     * 获取没有属性关联的基本属性列表
     * @param attrGroupId 属性分组id
     * @param params 分页查询参数
     * @return
     */
    R queryAllAttrNoRelationByAttrGroupId(Map<String, Object> params,Long attrGroupId);

    /**
     * 添加属性分组关联关系
     * @param attrRelationArray
     * @return
     */
    R addRelation(AttrRelationVo[] attrRelationArray);

    /**
     * 根据商品分类id查询该商品下的所有属性分组及其所有属性
     * @param categoryId
     * @return
     */
    R getAttrGroupWithAttrsByCatelogId(Long categoryId);
}

